<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>convol_image [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_filters.html">过滤器</a> / <a href="toc_filters_misc.html">Misc</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">convol_image</span><span data-if="c" style="display:none;">convol_image</span><span data-if="cpp" style="display:none;">ConvolImage</span><span data-if="dotnet" style="display:none;">ConvolImage</span><span data-if="python" style="display:none;">convol_image</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">convol_image</span><span data-if="c" style="display:none;">convol_image</span><span data-if="cpp" style="display:none;">ConvolImage</span><span data-if="dotnet" style="display:none;">ConvolImage</span><span data-if="python" style="display:none;">convol_image</span></code> — Calculate the correlation between an image and an arbitrary filter mask</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>convol_image</b>(<a href="#Image"><i>Image</i></a> : <a href="#ImageResult"><i>ImageResult</i></a> : <a href="#FilterMask"><i>FilterMask</i></a>, <a href="#Margin"><i>Margin</i></a> : )</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>convol_image</b>(const Hobject <a href="#Image"><i>Image</i></a>, Hobject* <a href="#ImageResult"><i>ImageResult</i></a>, const char* <a href="#FilterMask"><i>FilterMask</i></a>, const char* <a href="#Margin"><i>Margin</i></a>)</code></p>
<p>
<code>Herror <b>T_convol_image</b>(const Hobject <a href="#Image"><i>Image</i></a>, Hobject* <a href="#ImageResult"><i>ImageResult</i></a>, const Htuple <a href="#FilterMask"><i>FilterMask</i></a>, const Htuple <a href="#Margin"><i>Margin</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>ConvolImage</b>(const HObject&amp; <a href="#Image"><i>Image</i></a>, HObject* <a href="#ImageResult"><i>ImageResult</i></a>, const HTuple&amp; <a href="#FilterMask"><i>FilterMask</i></a>, const HTuple&amp; <a href="#Margin"><i>Margin</i></a>)</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>ConvolImage</b>(const HTuple&amp; <a href="#FilterMask"><i>FilterMask</i></a>, const HTuple&amp; <a href="#Margin"><i>Margin</i></a>) const</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>ConvolImage</b>(const HString&amp; <a href="#FilterMask"><i>FilterMask</i></a>, const HString&amp; <a href="#Margin"><i>Margin</i></a>) const</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>ConvolImage</b>(const char* <a href="#FilterMask"><i>FilterMask</i></a>, const char* <a href="#Margin"><i>Margin</i></a>) const</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>ConvolImage</b>(const wchar_t* <a href="#FilterMask"><i>FilterMask</i></a>, const wchar_t* <a href="#Margin"><i>Margin</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>ConvolImage</b>(<a href="HObject.html">HObject</a> <a href="#Image"><i>image</i></a>, out <a href="HObject.html">HObject</a> <a href="#ImageResult"><i>imageResult</i></a>, <a href="HTuple.html">HTuple</a> <a href="#FilterMask"><i>filterMask</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Margin"><i>margin</i></a>)</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>.<b>ConvolImage</b>(<a href="HTuple.html">HTuple</a> <a href="#FilterMask"><i>filterMask</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Margin"><i>margin</i></a>)</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>.<b>ConvolImage</b>(string <a href="#FilterMask"><i>filterMask</i></a>, string <a href="#Margin"><i>margin</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>convol_image</b>(<a href="#Image"><i>image</i></a>: HObject, <a href="#FilterMask"><i>filter_mask</i></a>: MaybeSequence[Union[int, float, str]], <a href="#Margin"><i>margin</i></a>: Union[int, float, str]) -&gt; HObject</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">convol_image</span><span data-if="c" style="display:none">convol_image</span><span data-if="cpp" style="display:none">ConvolImage</span><span data-if="com" style="display:none">ConvolImage</span><span data-if="dotnet" style="display:none">ConvolImage</span><span data-if="python" style="display:none">convol_image</span></code> calculates the correlation between the input
image <a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> and an arbitrary linear filter mask.  The used
filter mask, which is given in <a href="#FilterMask"><i><code><span data-if="hdevelop" style="display:inline">FilterMask</span><span data-if="c" style="display:none">FilterMask</span><span data-if="cpp" style="display:none">FilterMask</span><span data-if="com" style="display:none">FilterMask</span><span data-if="dotnet" style="display:none">filterMask</span><span data-if="python" style="display:none">filter_mask</span></code></i></a>, can be either
loaded from a file or passed as a tuple.  Several options for the
treatment at the image's borders can be chosen (<a href="#Margin"><i><code><span data-if="hdevelop" style="display:inline">Margin</span><span data-if="c" style="display:none">Margin</span><span data-if="cpp" style="display:none">Margin</span><span data-if="com" style="display:none">Margin</span><span data-if="dotnet" style="display:none">margin</span><span data-if="python" style="display:none">margin</span></code></i></a>):
<span class="pre">
    gray value   Pixels outside of the image border
                 are assumed to be constant (with the
                 indicated gray value).
    'continued'  Continuation of the gray values at the image border.
    'cyclic'     Cyclic continuation at the image border.
    'mirrored'   Reflection of pixels at the image border.
</span>
At all image positions, the correlation between the image and the
filter mask is calculated. If an overflow
or underflow occurs, the resulting gray value is clipped.  Hence, if
filters that result in negative output values are used (e.g.,
derivative filters), the input image should be of type int2 or real.
</p>
<p>The reference pixel of the mask, i.e., the pixel that lies at the
current image position for which the correlation is calculated,
is determined as follows: First, the region of all
mask pixels with a weight other than 0 is computed. Then, the center of this
region is computed and rounded. This is the reference point of the mask.
</p>
<p>If a file name is given in <a href="#FilterMask"><i><code><span data-if="hdevelop" style="display:inline">FilterMask</span><span data-if="c" style="display:none">FilterMask</span><span data-if="cpp" style="display:none">FilterMask</span><span data-if="com" style="display:none">FilterMask</span><span data-if="dotnet" style="display:none">filterMask</span><span data-if="python" style="display:none">filter_mask</span></code></i></a>, the filter mask is read from
a text file with the following structure:
<span class="pre">
   &lt;Mask size&gt;
   &lt;Inverse weight of the mask&gt;
   &lt;Matrix&gt;
</span>
The first line contains the size of the filter mask, given as two
numbers separated by white space (e.g., 3 3 for 3 x 3).
Here, the first number defines the height (rows) of the filter mask, while
the second number defines its width (columns).  The next line contains the
inverse weight of the mask, i.e., the number by which the
correlation at a particular image position is divided.  The remaining
lines contain the filter mask as integer or floating point numbers
(separated by white space), one line of the mask per line in the file.
The default HALCON file extension for the filter mask is 'fil'.
It is not necessary to pass this extension to 该算子.
If the filter mask is to be computed from a tuple, the
tuple given in <a href="#FilterMask"><i><code><span data-if="hdevelop" style="display:inline">FilterMask</span><span data-if="c" style="display:none">FilterMask</span><span data-if="cpp" style="display:none">FilterMask</span><span data-if="com" style="display:none">FilterMask</span><span data-if="dotnet" style="display:none">filterMask</span><span data-if="python" style="display:none">filter_mask</span></code></i></a> must also satisfy the structure
described above. However, in this case the line feed is omitted.
</p>
<p>For example, lets assume we want to use the following filter mask:
<span title="1" class="displaymath"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="7.13597em" height="3.7116em" viewBox="0 0 114.175476 59.385666">
<!-- Original BoundingBox: -57.087738 -29.692825 57.087738 29.692841 -->
  <defs>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_49">
      <path style="fill-rule: evenodd;" d="M294.000000 -640.000000C294.000000 -664.000000,294.000000 -666.000000,271.000000 -666.000000C209.000000 -602.000000,121.000000 -602.000000,89.000000 -602.000000L89.000000 -571.000000C109.000000 -571.000000,168.000000 -571.000000,220.000000 -597.000000L220.000000 -79.000000C220.000000 -43.000000,217.000000 -31.000000,127.000000 -31.000000L95.000000 -31.000000L95.000000 -0.000000L257.000000 -0.000000L130.000000 -3.000000L217.000000 -3.000000L257.000000 -3.000000L297.000000 -3.000000L384.000000 -3.000000L419.000000 -0.000000L419.000000 -31.000000L387.000000 -31.000000C297.000000 -31.000000,294.000000 -42.000000,294.000000 -79.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_50">
      <path style="fill-rule: evenodd;" d="M127.000000 -77.000000L233.000000 -180.000000C389.000000 -318.000000,449.000000 -372.000000,449.000000 -472.000000C449.000000 -586.000000,359.000000 -666.000000,237.000000 -666.000000C124.000000 -666.000000,50.000000 -574.000000,50.000000 -485.000000C50.000000 -429.000000,100.000000 -429.000000,103.000000 -429.000000C120.000000 -429.000000,155.000000 -441.000000,155.000000 -482.000000C155.000000 -508.000000,137.000000 -534.000000,102.000000 -534.000000C94.000000 -534.000000,92.000000 -534.000000,89.000000 -533.000000C112.000000 -598.000000,166.000000 -635.000000,224.000000 -635.000000C315.000000 -635.000000,358.000000 -554.000000,358.000000 -472.000000C358.000000 -392.000000,308.000000 -313.000000,253.000000 -251.000000L61.000000 -37.000000C50.000000 -26.000000,50.000000 -24.000000,50.000000 -0.000000L421.000000 -0.000000L449.000000 -174.000000L424.000000 -174.000000C419.000000 -144.000000,412.000000 -100.000000,402.000000 -85.000000C395.000000 -77.000000,329.000000 -77.000000,307.000000 -77.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_52">
      <path style="fill-rule: evenodd;" d="M294.000000 -165.000000L294.000000 -78.000000C294.000000 -42.000000,292.000000 -31.000000,218.000000 -31.000000L197.000000 -31.000000L197.000000 -0.000000L332.000000 -0.000000L238.000000 -3.000000L290.000000 -3.000000L332.000000 -3.000000L374.000000 -3.000000L427.000000 -3.000000L468.000000 -0.000000L468.000000 -31.000000L447.000000 -31.000000C373.000000 -31.000000,371.000000 -42.000000,371.000000 -78.000000L371.000000 -165.000000L471.000000 -165.000000L471.000000 -196.000000L371.000000 -196.000000L371.000000 -651.000000C371.000000 -671.000000,371.000000 -677.000000,355.000000 -677.000000C346.000000 -677.000000,343.000000 -677.000000,335.000000 -665.000000L28.000000 -196.000000L28.000000 -165.000000M300.000000 -196.000000L56.000000 -196.000000L300.000000 -569.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_50">
      <path style="fill-rule: evenodd;" d="M326.000000 1760.000000L395.000000 1760.000000L395.000000 30.000000L659.000000 30.000000L659.000000 -39.000000L326.000000 -39.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_51">
      <path style="fill-rule: evenodd;" d="M271.000000 1760.000000L340.000000 1760.000000L340.000000 -39.000000L7.000000 -39.000000L7.000000 30.000000L271.000000 30.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_52">
      <path style="fill-rule: evenodd;" d="M326.000000 1759.000000L659.000000 1759.000000L659.000000 1690.000000L395.000000 1690.000000L395.000000 -40.000000L326.000000 -40.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_53">
      <path style="fill-rule: evenodd;" d="M271.000000 1690.000000L7.000000 1690.000000L7.000000 1759.000000L340.000000 1759.000000L340.000000 -40.000000L271.000000 -40.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmr7_49">
      <path style="fill-rule: evenodd;" d="M335.000000 -636.000000C335.000000 -663.000000,333.000000 -664.000000,305.000000 -664.000000C241.000000 -601.000000,150.000000 -600.000000,109.000000 -600.000000L109.000000 -564.000000C133.000000 -564.000000,199.000000 -564.000000,254.000000 -592.000000L254.000000 -82.000000C254.000000 -49.000000,254.000000 -36.000000,154.000000 -36.000000L116.000000 -36.000000L116.000000 -0.000000L294.000000 -0.000000L134.000000 -1.000000L257.000000 -4.000000L294.000000 -4.000000L325.000000 -4.000000L451.000000 -1.000000L473.000000 -0.000000L473.000000 -36.000000L435.000000 -36.000000C335.000000 -36.000000,335.000000 -49.000000,335.000000 -82.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmr7_54">
      <path style="fill-rule: evenodd;" d="M150.000000 -327.000000C150.000000 -409.000000,157.000000 -483.000000,195.000000 -544.000000C229.000000 -598.000000,283.000000 -635.000000,347.000000 -635.000000C377.000000 -635.000000,417.000000 -627.000000,437.000000 -600.000000C412.000000 -598.000000,391.000000 -581.000000,391.000000 -552.000000C391.000000 -527.000000,408.000000 -505.000000,438.000000 -505.000000C468.000000 -505.000000,486.000000 -525.000000,486.000000 -554.000000C486.000000 -612.000000,444.000000 -664.000000,345.000000 -664.000000C201.000000 -664.000000,54.000000 -532.000000,54.000000 -317.000000C54.000000 -58.000000,176.000000 20.000000,286.000000 20.000000C408.000000 20.000000,514.000000 -73.000000,514.000000 -204.000000C514.000000 -331.000000,413.000000 -425.000000,296.000000 -425.000000C216.000000 -425.000000,172.000000 -372.000000,150.000000 -327.000000M286.000000 -12.000000C236.000000 -12.000000,197.000000 -41.000000,176.000000 -85.000000C161.000000 -115.000000,153.000000 -165.000000,153.000000 -225.000000C153.000000 -322.000000,211.000000 -397.000000,291.000000 -397.000000C337.000000 -397.000000,368.000000 -379.000000,393.000000 -342.000000C417.000000 -304.000000,418.000000 -262.000000,418.000000 -204.000000C418.000000 -147.000000,418.000000 -105.000000,391.000000 -66.000000C367.000000 -31.000000,335.000000 -12.000000,286.000000 -12.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,6.002045 26.708847)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr7_49"></use>
  </g>
  <path d="M2.825058 28.999893L15.533112 28.999893" style="stroke:rgb(0.000000%,0.000000%,0.000000%); stroke-width: 0.637604;stroke-linejoin: round;stroke-miterlimit: 10.000000;fill: none;"></path>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,2.825058 38.481873)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr7_49"></use>
    <use xlink:href="#GLYPHcmr7_54" x="3.986190"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,20.102570 0.944763)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_50"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,20.102570 29.637527)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_52"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,38.699615 13.697296)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_49"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,62.610107 13.697296)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_50"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,86.520599 13.697296)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_49"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,38.699615 32.825531)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_50"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,62.610107 32.825531)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_52"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,86.520599 32.825531)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_50"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,38.699615 51.953918)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_49"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,62.610107 51.953918)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_50"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,86.520599 51.953918)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_49"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,102.460815 0.944763)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_51"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,102.460815 29.637527)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_53"></use>
  </g>
</svg></span>
</p>
<p>If the filter mask should be generated from a file, then the file
should look like this:
</p>
<p><span class="pre">
3 3
16
1 2 1
2 4 2
1 2 1
</span>
</p>
<p>In contrast, if the filter mask should be generated from a tuple,
then the following tuple must be passed in <a href="#FilterMask"><i><code><span data-if="hdevelop" style="display:inline">FilterMask</span><span data-if="c" style="display:none">FilterMask</span><span data-if="cpp" style="display:none">FilterMask</span><span data-if="com" style="display:none">FilterMask</span><span data-if="dotnet" style="display:none">filterMask</span><span data-if="python" style="display:none">filter_mask</span></code></i></a>:
</p>
<p>[3,3,16,1,2,1,2,4,2,1,2,1]
</p>
<p>For convenience, it is possible to pass two vectors instead of a matrix
in <a href="#FilterMask"><i><code><span data-if="hdevelop" style="display:inline">FilterMask</span><span data-if="c" style="display:none">FilterMask</span><span data-if="cpp" style="display:none">FilterMask</span><span data-if="com" style="display:none">FilterMask</span><span data-if="dotnet" style="display:none">filterMask</span><span data-if="python" style="display:none">filter_mask</span></code></i></a>:
</p>
<p>[MaskHeight,MaskWidth,Weight,V1,V2]
</p>
<p>The outer product of those two vectors forms the filter matrix:
</p>
<p><span title="2" class="displaymath"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="8.51876em" height="0.963083em" viewBox="0 0 136.300201 15.409332">
<!-- Original BoundingBox: -68.150101 -7.704666 68.150101 7.704666 -->
  <defs>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_84">
      <path style="fill-rule: evenodd;" d="M486.000000 -605.000000C493.000000 -634.000000,495.000000 -637.000000,517.000000 -639.000000C522.000000 -640.000000,557.000000 -640.000000,577.000000 -640.000000C638.000000 -640.000000,664.000000 -640.000000,689.000000 -632.000000C734.000000 -618.000000,736.000000 -589.000000,736.000000 -553.000000C736.000000 -537.000000,736.000000 -524.000000,729.000000 -472.000000L727.000000 -461.000000C727.000000 -451.000000,734.000000 -446.000000,744.000000 -446.000000C759.000000 -446.000000,761.000000 -455.000000,763.000000 -471.000000L790.000000 -662.000000C790.000000 -676.000000,778.000000 -676.000000,760.000000 -676.000000L145.000000 -676.000000C120.000000 -676.000000,118.000000 -676.000000,111.000000 -655.000000L48.000000 -478.000000C47.000000 -474.000000,43.000000 -465.000000,43.000000 -460.000000C43.000000 -456.000000,45.000000 -446.000000,60.000000 -446.000000C73.000000 -446.000000,75.000000 -451.000000,81.000000 -470.000000C139.000000 -630.000000,172.000000 -640.000000,324.000000 -640.000000L366.000000 -640.000000C396.000000 -640.000000,397.000000 -639.000000,397.000000 -630.000000C397.000000 -629.000000,397.000000 -624.000000,393.000000 -609.000000L261.000000 -83.000000C252.000000 -46.000000,249.000000 -36.000000,144.000000 -36.000000C108.000000 -36.000000,99.000000 -36.000000,99.000000 -14.000000C99.000000 -11.000000,101.000000 -0.000000,116.000000 -0.000000C144.000000 -0.000000,174.000000 -3.000000,202.000000 -3.000000C230.000000 -3.000000,260.000000 -4.000000,288.000000 -4.000000C316.000000 -4.000000,350.000000 -4.000000,378.000000 -3.000000C405.000000 -2.000000,435.000000 -0.000000,462.000000 -0.000000C470.000000 -0.000000,485.000000 -0.000000,485.000000 -22.000000C485.000000 -36.000000,475.000000 -36.000000,444.000000 -36.000000C425.000000 -36.000000,405.000000 -37.000000,386.000000 -38.000000C352.000000 -41.000000,350.000000 -45.000000,350.000000 -57.000000C350.000000 -64.000000,350.000000 -66.000000,354.000000 -80.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_49">
      <path style="fill-rule: evenodd;" d="M294.000000 -640.000000C294.000000 -664.000000,294.000000 -666.000000,271.000000 -666.000000C209.000000 -602.000000,121.000000 -602.000000,89.000000 -602.000000L89.000000 -571.000000C109.000000 -571.000000,168.000000 -571.000000,220.000000 -597.000000L220.000000 -79.000000C220.000000 -43.000000,217.000000 -31.000000,127.000000 -31.000000L95.000000 -31.000000L95.000000 -0.000000L257.000000 -0.000000L130.000000 -3.000000L217.000000 -3.000000L257.000000 -3.000000L297.000000 -3.000000L384.000000 -3.000000L419.000000 -0.000000L419.000000 -31.000000L387.000000 -31.000000C297.000000 -31.000000,294.000000 -42.000000,294.000000 -79.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_58">
      <path style="fill-rule: evenodd;" d="M192.000000 -378.000000C192.000000 -407.000000,168.000000 -431.000000,139.000000 -431.000000C110.000000 -431.000000,86.000000 -407.000000,86.000000 -378.000000C86.000000 -349.000000,110.000000 -325.000000,139.000000 -325.000000C168.000000 -325.000000,192.000000 -349.000000,192.000000 -378.000000M192.000000 -53.000000C192.000000 -82.000000,168.000000 -106.000000,139.000000 -106.000000C110.000000 -106.000000,86.000000 -82.000000,86.000000 -53.000000C86.000000 -24.000000,110.000000 -0.000000,139.000000 -0.000000C168.000000 -0.000000,192.000000 -24.000000,192.000000 -53.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_61">
      <path style="fill-rule: evenodd;" d="M687.000000 -327.000000C702.000000 -327.000000,721.000000 -327.000000,721.000000 -347.000000C721.000000 -367.000000,702.000000 -367.000000,688.000000 -367.000000L89.000000 -367.000000C75.000000 -367.000000,56.000000 -367.000000,56.000000 -347.000000C56.000000 -327.000000,75.000000 -327.000000,90.000000 -327.000000M688.000000 -133.000000C702.000000 -133.000000,721.000000 -133.000000,721.000000 -153.000000C721.000000 -173.000000,702.000000 -173.000000,687.000000 -173.000000L90.000000 -173.000000C75.000000 -173.000000,56.000000 -173.000000,56.000000 -153.000000C56.000000 -133.000000,75.000000 -133.000000,89.000000 -133.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmsy10_3">
      <path style="fill-rule: evenodd;" d="M275.000000 -427.000000C276.000000 -441.000000,276.000000 -465.000000,250.000000 -465.000000C234.000000 -465.000000,221.000000 -452.000000,224.000000 -439.000000L224.000000 -426.000000L238.000000 -271.000000L110.000000 -364.000000C101.000000 -369.000000,99.000000 -371.000000,92.000000 -371.000000C78.000000 -371.000000,65.000000 -357.000000,65.000000 -343.000000C65.000000 -327.000000,75.000000 -323.000000,85.000000 -318.000000L227.000000 -250.000000L89.000000 -183.000000C73.000000 -175.000000,65.000000 -171.000000,65.000000 -156.000000C65.000000 -141.000000,78.000000 -128.000000,92.000000 -128.000000C99.000000 -128.000000,101.000000 -128.000000,126.000000 -147.000000L238.000000 -228.000000L223.000000 -60.000000C223.000000 -39.000000,241.000000 -34.000000,249.000000 -34.000000C261.000000 -34.000000,276.000000 -41.000000,276.000000 -60.000000L261.000000 -228.000000L389.000000 -135.000000C398.000000 -130.000000,400.000000 -128.000000,407.000000 -128.000000C421.000000 -128.000000,434.000000 -142.000000,434.000000 -156.000000C434.000000 -171.000000,425.000000 -176.000000,413.000000 -182.000000C353.000000 -212.000000,351.000000 -212.000000,272.000000 -249.000000L410.000000 -316.000000C426.000000 -324.000000,434.000000 -328.000000,434.000000 -343.000000C434.000000 -358.000000,421.000000 -371.000000,407.000000 -371.000000C400.000000 -371.000000,398.000000 -371.000000,373.000000 -352.000000L261.000000 -271.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_77">
      <path style="fill-rule: evenodd;" d="M926.000000 -606.000000C935.000000 -642.000000,937.000000 -652.000000,1012.000000 -652.000000C1035.000000 -652.000000,1044.000000 -652.000000,1044.000000 -672.000000C1044.000000 -683.000000,1034.000000 -683.000000,1017.000000 -683.000000L885.000000 -683.000000C859.000000 -683.000000,858.000000 -683.000000,846.000000 -664.000000L481.000000 -94.000000L403.000000 -660.000000C400.000000 -683.000000,398.000000 -683.000000,372.000000 -683.000000L235.000000 -683.000000C216.000000 -683.000000,205.000000 -683.000000,205.000000 -664.000000C205.000000 -652.000000,214.000000 -652.000000,234.000000 -652.000000C247.000000 -652.000000,265.000000 -651.000000,277.000000 -650.000000C293.000000 -648.000000,299.000000 -645.000000,299.000000 -634.000000C299.000000 -630.000000,298.000000 -627.000000,295.000000 -615.000000L168.000000 -106.000000C158.000000 -66.000000,141.000000 -34.000000,60.000000 -31.000000C55.000000 -31.000000,42.000000 -30.000000,42.000000 -12.000000C42.000000 -3.000000,48.000000 -0.000000,56.000000 -0.000000L156.000000 -0.000000L88.000000 -0.000000L123.000000 -3.000000L156.000000 -3.000000L190.000000 -3.000000L226.000000 -0.000000L259.000000 -0.000000C264.000000 -0.000000,277.000000 -0.000000,277.000000 -20.000000C277.000000 -31.000000,266.000000 -31.000000,259.000000 -31.000000C202.000000 -32.000000,191.000000 -52.000000,191.000000 -75.000000C191.000000 -82.000000,192.000000 -87.000000,195.000000 -98.000000L331.000000 -643.000000L332.000000 -643.000000L418.000000 -23.000000C420.000000 -11.000000,421.000000 -0.000000,433.000000 -0.000000C444.000000 -0.000000,450.000000 -11.000000,455.000000 -18.000000L859.000000 -651.000000L860.000000 -651.000000L717.000000 -78.000000C707.000000 -39.000000,705.000000 -31.000000,626.000000 -31.000000C609.000000 -31.000000,598.000000 -31.000000,598.000000 -12.000000C598.000000 -0.000000,610.000000 -0.000000,613.000000 -0.000000L737.000000 -0.000000L641.000000 -0.000000L709.000000 -3.000000L737.000000 -3.000000L778.000000 -3.000000L821.000000 -0.000000L862.000000 -0.000000C868.000000 -0.000000,881.000000 -0.000000,881.000000 -20.000000C881.000000 -31.000000,872.000000 -31.000000,853.000000 -31.000000C816.000000 -31.000000,788.000000 -31.000000,788.000000 -49.000000C788.000000 -53.000000,788.000000 -55.000000,793.000000 -73.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_86">
      <path style="fill-rule: evenodd;" d="M628.000000 -569.000000C677.000000 -647.000000,719.000000 -650.000000,756.000000 -652.000000C768.000000 -653.000000,769.000000 -670.000000,769.000000 -671.000000C769.000000 -679.000000,764.000000 -683.000000,756.000000 -683.000000L674.000000 -683.000000L730.000000 -683.000000L701.000000 -680.000000L674.000000 -680.000000L641.000000 -680.000000L607.000000 -683.000000L575.000000 -683.000000C569.000000 -683.000000,556.000000 -683.000000,556.000000 -664.000000C556.000000 -653.000000,565.000000 -652.000000,572.000000 -652.000000C599.000000 -650.000000,618.000000 -640.000000,618.000000 -619.000000C618.000000 -604.000000,603.000000 -582.000000,603.000000 -581.000000L296.000000 -93.000000L228.000000 -622.000000C228.000000 -639.000000,251.000000 -652.000000,297.000000 -652.000000C311.000000 -652.000000,322.000000 -652.000000,322.000000 -672.000000C322.000000 -681.000000,314.000000 -683.000000,308.000000 -683.000000C268.000000 -683.000000,225.000000 -680.000000,184.000000 -680.000000C166.000000 -680.000000,147.000000 -681.000000,129.000000 -681.000000C111.000000 -681.000000,92.000000 -683.000000,75.000000 -683.000000C68.000000 -683.000000,56.000000 -683.000000,56.000000 -664.000000C56.000000 -652.000000,65.000000 -652.000000,81.000000 -652.000000C137.000000 -652.000000,138.000000 -643.000000,141.000000 -618.000000L220.000000 -1.000000C223.000000 19.000000,227.000000 22.000000,240.000000 22.000000C256.000000 22.000000,260.000000 17.000000,268.000000 4.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_97">
      <path style="fill-rule: evenodd;" d="M373.000000 -378.000000C355.000000 -415.000000,326.000000 -442.000000,281.000000 -442.000000C164.000000 -442.000000,40.000000 -295.000000,40.000000 -149.000000C40.000000 -55.000000,95.000000 11.000000,173.000000 11.000000C193.000000 11.000000,243.000000 7.000000,303.000000 -64.000000C311.000000 -22.000000,346.000000 11.000000,394.000000 11.000000C429.000000 11.000000,452.000000 -12.000000,468.000000 -44.000000C485.000000 -80.000000,498.000000 -141.000000,498.000000 -143.000000C498.000000 -153.000000,489.000000 -153.000000,486.000000 -153.000000C476.000000 -153.000000,475.000000 -149.000000,472.000000 -135.000000C455.000000 -70.000000,437.000000 -11.000000,396.000000 -11.000000C369.000000 -11.000000,366.000000 -37.000000,366.000000 -57.000000C366.000000 -79.000000,368.000000 -87.000000,379.000000 -131.000000C390.000000 -173.000000,392.000000 -183.000000,401.000000 -221.000000L437.000000 -361.000000C444.000000 -389.000000,444.000000 -391.000000,444.000000 -395.000000C444.000000 -412.000000,432.000000 -422.000000,415.000000 -422.000000C391.000000 -422.000000,376.000000 -400.000000,373.000000 -378.000000M308.000000 -119.000000C303.000000 -101.000000,303.000000 -99.000000,288.000000 -82.000000C244.000000 -27.000000,203.000000 -11.000000,175.000000 -11.000000C125.000000 -11.000000,111.000000 -66.000000,111.000000 -105.000000C111.000000 -155.000000,143.000000 -278.000000,166.000000 -324.000000C197.000000 -383.000000,242.000000 -420.000000,282.000000 -420.000000C347.000000 -420.000000,361.000000 -338.000000,361.000000 -332.000000C361.000000 -326.000000,359.000000 -320.000000,358.000000 -315.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_107">
      <path style="fill-rule: evenodd;" d="M287.000000 -683.000000C287.000000 -684.000000,287.000000 -694.000000,274.000000 -694.000000C251.000000 -694.000000,178.000000 -686.000000,152.000000 -684.000000C144.000000 -683.000000,133.000000 -682.000000,133.000000 -664.000000C133.000000 -652.000000,142.000000 -652.000000,157.000000 -652.000000C205.000000 -652.000000,207.000000 -645.000000,207.000000 -635.000000L204.000000 -615.000000L59.000000 -39.000000C55.000000 -25.000000,55.000000 -23.000000,55.000000 -17.000000C55.000000 6.000000,75.000000 11.000000,84.000000 11.000000C97.000000 11.000000,112.000000 2.000000,118.000000 -10.000000C123.000000 -19.000000,168.000000 -204.000000,174.000000 -229.000000C208.000000 -226.000000,290.000000 -210.000000,290.000000 -144.000000C290.000000 -137.000000,290.000000 -133.000000,287.000000 -123.000000C285.000000 -111.000000,283.000000 -99.000000,283.000000 -88.000000C283.000000 -29.000000,323.000000 11.000000,375.000000 11.000000C405.000000 11.000000,432.000000 -5.000000,454.000000 -42.000000C479.000000 -86.000000,490.000000 -141.000000,490.000000 -143.000000C490.000000 -153.000000,481.000000 -153.000000,478.000000 -153.000000C468.000000 -153.000000,467.000000 -149.000000,464.000000 -135.000000C444.000000 -62.000000,421.000000 -11.000000,377.000000 -11.000000C358.000000 -11.000000,345.000000 -22.000000,345.000000 -58.000000C345.000000 -75.000000,349.000000 -98.000000,353.000000 -114.000000C357.000000 -131.000000,357.000000 -135.000000,357.000000 -145.000000C357.000000 -210.000000,294.000000 -239.000000,209.000000 -250.000000C240.000000 -268.000000,272.000000 -300.000000,295.000000 -324.000000C343.000000 -377.000000,389.000000 -420.000000,438.000000 -420.000000C444.000000 -420.000000,445.000000 -420.000000,447.000000 -419.000000C459.000000 -417.000000,460.000000 -417.000000,468.000000 -411.000000C470.000000 -410.000000,470.000000 -409.000000,472.000000 -407.000000C424.000000 -404.000000,415.000000 -365.000000,415.000000 -353.000000C415.000000 -337.000000,426.000000 -318.000000,453.000000 -318.000000C479.000000 -318.000000,508.000000 -340.000000,508.000000 -379.000000C508.000000 -409.000000,485.000000 -442.000000,440.000000 -442.000000C412.000000 -442.000000,366.000000 -434.000000,294.000000 -354.000000C260.000000 -316.000000,221.000000 -276.000000,183.000000 -261.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_115">
      <path style="fill-rule: evenodd;" d="M391.000000 -374.000000C363.000000 -373.000000,343.000000 -351.000000,343.000000 -329.000000C343.000000 -315.000000,352.000000 -300.000000,374.000000 -300.000000C396.000000 -300.000000,420.000000 -317.000000,420.000000 -356.000000C420.000000 -401.000000,377.000000 -442.000000,301.000000 -442.000000C169.000000 -442.000000,132.000000 -340.000000,132.000000 -296.000000C132.000000 -218.000000,206.000000 -203.000000,235.000000 -197.000000C287.000000 -187.000000,339.000000 -176.000000,339.000000 -121.000000C339.000000 -95.000000,316.000000 -11.000000,196.000000 -11.000000C182.000000 -11.000000,105.000000 -11.000000,82.000000 -64.000000C120.000000 -59.000000,145.000000 -89.000000,145.000000 -117.000000C145.000000 -140.000000,129.000000 -152.000000,108.000000 -152.000000C82.000000 -152.000000,52.000000 -131.000000,52.000000 -86.000000C52.000000 -29.000000,109.000000 11.000000,195.000000 11.000000C357.000000 11.000000,396.000000 -110.000000,396.000000 -155.000000C396.000000 -191.000000,377.000000 -216.000000,365.000000 -228.000000C338.000000 -256.000000,309.000000 -261.000000,265.000000 -270.000000C229.000000 -278.000000,189.000000 -285.000000,189.000000 -330.000000C189.000000 -359.000000,213.000000 -420.000000,301.000000 -420.000000C326.000000 -420.000000,376.000000 -413.000000,391.000000 -374.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.849899 13.704666)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_77"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,18.052048 13.704666)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_97"></use>
    <use xlink:href="#GLYPHcmmi10_115" x="5.285988"></use>
    <use xlink:href="#GLYPHcmmi10_107" x="9.973555"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,47.178085 13.704666)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_58"></use>
    <use xlink:href="#GLYPHcmr10_61" x="2.777830"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,68.431747 13.704666)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_86"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,81.272614 13.704666)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_49"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,92.784973 13.704666)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_3"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,104.297333 13.704666)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_86"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,117.138016 13.704666)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_49"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,125.108276 7.919998)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_84"></use>
  </g>
</svg></span>
</p>
<p>E.g., the matrix above can also be passed as:
</p>
<p>[3,3,16,1,2,1,1,2,1]
</p>
<p>If <a href="#FilterMask"><i><code><span data-if="hdevelop" style="display:inline">FilterMask</span><span data-if="c" style="display:none">FilterMask</span><span data-if="cpp" style="display:none">FilterMask</span><span data-if="com" style="display:none">FilterMask</span><span data-if="dotnet" style="display:none">filterMask</span><span data-if="python" style="display:none">filter_mask</span></code></i></a> is separable (which is detected automatically),
<code><span data-if="hdevelop" style="display:inline">convol_image</span><span data-if="c" style="display:none">convol_image</span><span data-if="cpp" style="display:none">ConvolImage</span><span data-if="com" style="display:none">ConvolImage</span><span data-if="dotnet" style="display:none">ConvolImage</span><span data-if="python" style="display:none">convol_image</span></code> uses a special implementation that is significantly
faster than the filtering with non separable masks.
</p>
<p>If <i><span data-if="hdevelop" style="display:inline">'sse2_enable'</span><span data-if="c" style="display:none">"sse2_enable"</span><span data-if="cpp" style="display:none">"sse2_enable"</span><span data-if="com" style="display:none">"sse2_enable"</span><span data-if="dotnet" style="display:none">"sse2_enable"</span><span data-if="python" style="display:none">"sse2_enable"</span></i> is set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i> (and the SIMD
instruction set is available), the internal calculations for <code>byte</code> and
<code>real</code> images are performed using SIMD technology.
If <i><span data-if="hdevelop" style="display:inline">'sse41_enable'</span><span data-if="c" style="display:none">"sse41_enable"</span><span data-if="cpp" style="display:none">"sse41_enable"</span><span data-if="com" style="display:none">"sse41_enable"</span><span data-if="dotnet" style="display:none">"sse41_enable"</span><span data-if="python" style="display:none">"sse41_enable"</span></i> is set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i> (and the SIMD
instruction set is available), the internal calculations for <code>int2</code> and
<code>uint2</code> images are performed using SIMD technology.
If <i><span data-if="hdevelop" style="display:inline">'avx_enable'</span><span data-if="c" style="display:none">"avx_enable"</span><span data-if="cpp" style="display:none">"avx_enable"</span><span data-if="com" style="display:none">"avx_enable"</span><span data-if="dotnet" style="display:none">"avx_enable"</span><span data-if="python" style="display:none">"avx_enable"</span></i> is set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i> (and the SIMD
instruction set is available), the internal calculations for <code>real</code>
images are performed using AVX SIMD technology.
</p>
<h2 id="sec_attention">注意</h2>
<p>Note that <code><span data-if="hdevelop" style="display:inline">convol_image</span><span data-if="c" style="display:none">convol_image</span><span data-if="cpp" style="display:none">ConvolImage</span><span data-if="com" style="display:none">ConvolImage</span><span data-if="dotnet" style="display:none">ConvolImage</span><span data-if="python" style="display:none">convol_image</span></code> does not compute a convolution of the
image with the given filter mask but a correlation, i.e., it uses the
given filter mask directly, not a mirrored version of the filter mask.
</p>
<p>When using a 3x3 or 5x5 rectangular filter mask and the border treatment
<i><span data-if="hdevelop" style="display:inline">'mirrored'</span><span data-if="c" style="display:none">"mirrored"</span><span data-if="cpp" style="display:none">"mirrored"</span><span data-if="com" style="display:none">"mirrored"</span><span data-if="dotnet" style="display:none">"mirrored"</span><span data-if="python" style="display:none">"mirrored"</span></i>, <code><span data-if="hdevelop" style="display:inline">convol_image</span><span data-if="c" style="display:none">convol_image</span><span data-if="cpp" style="display:none">ConvolImage</span><span data-if="com" style="display:none">ConvolImage</span><span data-if="dotnet" style="display:none">ConvolImage</span><span data-if="python" style="display:none">convol_image</span></code> can be executed on OpenCL devices.
</p>
<p>Note that filter operators may return unexpected results if
an image with a reduced domain is used as input. Please refer to the
chapter <a href="toc_filters.html">过滤器</a>.</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
    
      <li>支持OpenCL计算设备。</li>
    
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>在元组级别自动并行化。</li>
    <li>在图像通道级别自动并行化。</li>
    <li>Automatically parallelized on internal data level.</li>
  
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Image" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></b> (input_object)  </span><span>(multichannel-)image(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject</span> (byte / int2 / uint2 / real)</span>
</div>
<p class="pardesc">Images for which the correlation will be calculated.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="ImageResult" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ImageResult</span><span data-if="c" style="display:none">ImageResult</span><span data-if="cpp" style="display:none">ImageResult</span><span data-if="com" style="display:none">ImageResult</span><span data-if="dotnet" style="display:none">imageResult</span><span data-if="python" style="display:none">image_result</span></code></b> (output_object)  </span><span>multichannel-image(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject *</span> (byte / int2 / uint2 / real)</span>
</div>
<p class="pardesc">Result of the correlation.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="FilterMask" class="parname"><b><code><span data-if="hdevelop" style="display:inline">FilterMask</span><span data-if="c" style="display:none">FilterMask</span><span data-if="cpp" style="display:none">FilterMask</span><span data-if="com" style="display:none">FilterMask</span><span data-if="dotnet" style="display:none">filterMask</span><span data-if="python" style="display:none">filter_mask</span></code></b> (input_control)  </span><span>filename.read(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[Union[int, float, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string / </span><span data-if="hdevelop" style="display:inline">integer / </span><span data-if="hdevelop" style="display:inline">real)</span><span data-if="dotnet" style="display:none"> (<i>string</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">double)</span><span data-if="cpp" style="display:none"> (<i>HString</i> / </span><span data-if="cpp" style="display:none">Hlong / </span><span data-if="cpp" style="display:none">double)</span><span data-if="c" style="display:none"> (<i>char*</i> / </span><span data-if="c" style="display:none">Hlong / </span><span data-if="c" style="display:none">double)</span></span>
</div>
<p class="pardesc">Filter mask as file name or tuple.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'sobel'</span>
    <span data-if="c" style="display:none">"sobel"</span>
    <span data-if="cpp" style="display:none">"sobel"</span>
    <span data-if="com" style="display:none">"sobel"</span>
    <span data-if="dotnet" style="display:none">"sobel"</span>
    <span data-if="python" style="display:none">"sobel"</span>
</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span><span data-if="hdevelop" style="display:inline">'sobel'</span><span data-if="c" style="display:none">"sobel"</span><span data-if="cpp" style="display:none">"sobel"</span><span data-if="com" style="display:none">"sobel"</span><span data-if="dotnet" style="display:none">"sobel"</span><span data-if="python" style="display:none">"sobel"</span>, <span data-if="hdevelop" style="display:inline">'laplace4'</span><span data-if="c" style="display:none">"laplace4"</span><span data-if="cpp" style="display:none">"laplace4"</span><span data-if="com" style="display:none">"laplace4"</span><span data-if="dotnet" style="display:none">"laplace4"</span><span data-if="python" style="display:none">"laplace4"</span>, <span data-if="hdevelop" style="display:inline">'lowpas_3_3'</span><span data-if="c" style="display:none">"lowpas_3_3"</span><span data-if="cpp" style="display:none">"lowpas_3_3"</span><span data-if="com" style="display:none">"lowpas_3_3"</span><span data-if="dotnet" style="display:none">"lowpas_3_3"</span><span data-if="python" style="display:none">"lowpas_3_3"</span></p>
<p class="pardesc"><span class="parcat">File extension:
          </span>.<code>fil</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="Margin" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Margin</span><span data-if="c" style="display:none">Margin</span><span data-if="cpp" style="display:none">Margin</span><span data-if="com" style="display:none">Margin</span><span data-if="dotnet" style="display:none">margin</span><span data-if="python" style="display:none">margin</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[int, float, str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string / </span><span data-if="hdevelop" style="display:inline">integer / </span><span data-if="hdevelop" style="display:inline">real)</span><span data-if="dotnet" style="display:none"> (<i>string</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">double)</span><span data-if="cpp" style="display:none"> (<i>HString</i> / </span><span data-if="cpp" style="display:none">Hlong / </span><span data-if="cpp" style="display:none">double)</span><span data-if="c" style="display:none"> (<i>char*</i> / </span><span data-if="c" style="display:none">Hlong / </span><span data-if="c" style="display:none">double)</span></span>
</div>
<p class="pardesc">Border treatment.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'mirrored'</span>
    <span data-if="c" style="display:none">"mirrored"</span>
    <span data-if="cpp" style="display:none">"mirrored"</span>
    <span data-if="com" style="display:none">"mirrored"</span>
    <span data-if="dotnet" style="display:none">"mirrored"</span>
    <span data-if="python" style="display:none">"mirrored"</span>
</p>
<p class="pardesc"><span class="parcat">List of values (for compute devices):
      </span><span data-if="hdevelop" style="display:inline">'mirrored'</span><span data-if="c" style="display:none">"mirrored"</span><span data-if="cpp" style="display:none">"mirrored"</span><span data-if="com" style="display:none">"mirrored"</span><span data-if="dotnet" style="display:none">"mirrored"</span><span data-if="python" style="display:none">"mirrored"</span></p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span><span data-if="hdevelop" style="display:inline">'mirrored'</span><span data-if="c" style="display:none">"mirrored"</span><span data-if="cpp" style="display:none">"mirrored"</span><span data-if="com" style="display:none">"mirrored"</span><span data-if="dotnet" style="display:none">"mirrored"</span><span data-if="python" style="display:none">"mirrored"</span>, <span data-if="hdevelop" style="display:inline">'cyclic'</span><span data-if="c" style="display:none">"cyclic"</span><span data-if="cpp" style="display:none">"cyclic"</span><span data-if="com" style="display:none">"cyclic"</span><span data-if="dotnet" style="display:none">"cyclic"</span><span data-if="python" style="display:none">"cyclic"</span>, <span data-if="hdevelop" style="display:inline">'continued'</span><span data-if="c" style="display:none">"continued"</span><span data-if="cpp" style="display:none">"continued"</span><span data-if="com" style="display:none">"continued"</span><span data-if="dotnet" style="display:none">"continued"</span><span data-if="python" style="display:none">"continued"</span>, 0, 30, 60, 90, 120, 150, 180, 210, 240, 255</p>
</div>
<h2 id="sec_module">模块</h2>
<p>
Foundation</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
